package org.wu.framework.authorization.platform.application;

import org.wu.framework.authorization.platform.application.dto.SysZoneApplicationVersionDTO;
import org.wu.framework.web.response.Result;
import org.wu.framework.authorization.platform.domain.model.sys.zone.application.version.SysZoneApplicationVersion;
import org.wu.framework.authorization.platform.application.command.sys.zone.application.version.SysZoneApplicationVersionRemoveCommand;
import org.wu.framework.authorization.platform.application.command.sys.zone.application.version.SysZoneApplicationVersionStoryCommand;
import org.wu.framework.authorization.platform.application.command.sys.zone.application.version.SysZoneApplicationVersionUpdateCommand;
import org.wu.framework.authorization.platform.application.command.sys.zone.application.version.SysZoneApplicationVersionQueryListCommand;
import org.wu.framework.authorization.platform.application.command.sys.zone.application.version.SysZoneApplicationVersionQueryOneCommand;

import java.util.List;
import org.wu.framework.lazy.orm.database.lambda.domain.LazyPage;
/**
 * describe 应用版本 
 *
 * @author Jia wei Wu
 * @date 2024/04/02 06:21 晚上
 * @see org.wu.framework.lazy.orm.core.persistence.reverse.lazy.ddd.DefaultDDDLazyApplication 
 **/

public interface SysZoneApplicationVersionApplication {


    /**
     * describe 新增应用版本
     *
     * @param sysZoneApplicationVersionStoryCommand 新增应用版本
     * @return {@link Result< SysZoneApplicationVersion >} 应用版本新增后领域对象
     
     * @author Jia wei Wu
     * @date 2024/04/02 06:21 晚上
     **/

    Result<SysZoneApplicationVersion> story(SysZoneApplicationVersionStoryCommand sysZoneApplicationVersionStoryCommand);

    /**
     * describe 批量新增应用版本
     *
     * @param sysZoneApplicationVersionStoryCommandList 批量新增应用版本
     * @return {@link Result<List< SysZoneApplicationVersion >>} 应用版本新增后领域对象集合
     
     * @author Jia wei Wu
     * @date 2024/04/02 06:21 晚上
     **/

    Result<List<SysZoneApplicationVersion>> batchStory(List<SysZoneApplicationVersionStoryCommand> sysZoneApplicationVersionStoryCommandList);

    /**
     * describe 更新应用版本
     *
     * @param sysZoneApplicationVersionUpdateCommand 更新应用版本
     * @return {@link Result< SysZoneApplicationVersion >} 应用版本领域对象
     
     * @author Jia wei Wu
     * @date 2024/04/02 06:21 晚上
     **/

    Result<SysZoneApplicationVersion> updateOne(SysZoneApplicationVersionUpdateCommand sysZoneApplicationVersionUpdateCommand);

    /**
     * describe 查询单个应用版本
     *
     * @param sysZoneApplicationVersionQueryOneCommand 查询单个应用版本
     * @return {@link Result< SysZoneApplicationVersionDTO >} 应用版本DTO对象
     
     * @author Jia wei Wu
     * @date 2024/04/02 06:21 晚上
     **/

    Result<SysZoneApplicationVersionDTO> findOne(SysZoneApplicationVersionQueryOneCommand sysZoneApplicationVersionQueryOneCommand);

    /**
     * describe 查询多个应用版本
     *
     * @param sysZoneApplicationVersionQueryListCommand 查询多个应用版本
     * @return {@link Result <List<SysZoneApplicationVersionDTO>>} 应用版本DTO对象
     
     * @author Jia wei Wu
     * @date 2024/04/02 06:21 晚上
     **/

    Result <List<SysZoneApplicationVersionDTO>> findList(SysZoneApplicationVersionQueryListCommand sysZoneApplicationVersionQueryListCommand);

    /**
     * describe 分页查询多个应用版本
     *
     * @param sysZoneApplicationVersionQueryListCommand 分页查询多个应用版本
     * @return {@link Result <LazyPage<SysZoneApplicationVersionDTO>>} 分页应用版本DTO对象
     
     * @author Jia wei Wu
     * @date 2024/04/02 06:21 晚上
     **/

    Result <LazyPage<SysZoneApplicationVersionDTO>> findPage(int size, int current, SysZoneApplicationVersionQueryListCommand sysZoneApplicationVersionQueryListCommand);

    /**
     * describe 删除应用版本
     *
     * @param sysZoneApplicationVersionRemoveCommand 删除应用版本
     * @return {@link Result< SysZoneApplicationVersion >} 应用版本
     
     * @author Jia wei Wu
     * @date 2024/04/02 06:21 晚上
     **/

    Result<SysZoneApplicationVersion> remove(SysZoneApplicationVersionRemoveCommand sysZoneApplicationVersionRemoveCommand);

}